package funcionario;
import java.sql.*;
import java.util.*;

import DATABASE.ConnectionManager;
import java.util.logging.*;


public class FuncionarioRepositorio implements FuncionarioInterface {

    
    public void cadastrarFuncionario(Funcionario cadastro)throws FuncionarioErro {
			if(cadastro!=null) {
				String comandoSQL;
				comandoSQL = "insert into funcionario (Nome,RG, Endereco, Telefone, Email, Cargo, Funcao, Matricula, Setor, Status) values "
                                        + "('"+ cadastro.getNome() + "',"
                                        + "'" + cadastro.getRg()+"',"
                                        + "'" + cadastro.getEndereco() + "',"
                                        + "'" + cadastro.getTelefone()+ "',"
                                        + "'" + cadastro.getCelular() +  "',"
                                        + "'" + cadastro.getEmail() +"',"
                                        //+ "'" + cadastro.getTipoPessoa() + "',"
                                        + "'" + cadastro.getCargo() + "',"
                                        + "'" + cadastro.getFuncao() + "',"
                                        + "'" + cadastro.getMatricula()+ "',"
                                        + "'" + cadastro.getSetor() + "',"
                                        + "'" + cadastro.getStatus()+"')";
                                
				System.out.println(comandoSQL);
				try {
					Statement stmt = ConnectionManager.getStatement();
					stmt.executeUpdate(comandoSQL);
					stmt.close();
				} catch (SQLException e) {
					System.out.println("� aqui o problema!!!");
					e.printStackTrace();
				}
			} else {
				throw new FuncionarioErro();
			}
		}
    /**
     * 
     * @return
     * @throws FuncionarioErro
     */
    public List listarFuncionario() throws FuncionarioErro{

    	ResultSet rs;
		List lista = new ArrayList();
		String comandoSQL;
		comandoSQL = "select * from funcionario";
		System.out.println(comandoSQL);
		try {
			Statement stmt = ConnectionManager.getStatement();
			rs = stmt.executeQuery(comandoSQL);
			while(rs.next()) {
				                                
                                Funcionario f = new Funcionario(rs.getInt("idFuncionario"), rs.getString("Nome"),rs.getString("RG"), rs.getString("Endereco"),rs.getString("Telefone"),rs.getString("Celular"), rs.getString("Email"),/*rs.getType(TipoPessoa),*/ rs.getString("Cargo"), rs.getString("Funcao"),rs.getString("Matricula"), rs.getString("Setor"), rs.getString("Status"));
                                System.out.println(rs.getString("Nome"));
				lista.add(f);
			}       
			stmt.close();
		} catch (SQLException e) {
			System.out.println("� aqui o problema!!!");
			e.printStackTrace();
		}
		return lista;

	}



    
    public void editarFuncionario(Funcionario modifica) throws FuncionarioErro{
    		if(modifica!=null) {
    			String comandoSQL;
    			comandoSQL = "update funcionario set Nome = '" + modifica.getNome() + "', RG = '" + modifica.getRg()+ "' Endereco = '" + modifica.getEndereco() +  "' Telefone = '" + modifica.getTelefone() +  "' Celular = '" + modifica.getCelular() + "' Email = '" + modifica.getEmail() +/* "' TipoPessoa = '" + modifica.getTipoPessoa()+*/ "'Cargo='"+modifica.getCargo()+ "' Funcao = '" + modifica.getFuncao()+ "' Matricula = '" + modifica.getMatricula()+ "' Setor = '" + modifica.getSetor()+ "' Status = '" + modifica.getStatus();
    			System.out.println(comandoSQL);
    			try {
    				Statement stmt = ConnectionManager.getStatement();
    				stmt.executeUpdate(comandoSQL);
    				stmt.close();
    			} catch (SQLException e) {
    				System.out.println("é aqui o problema!!!");
    				e.printStackTrace();
    			}
    		} else {
    			throw new FuncionarioErro();
    		}
    	}



    /**
     * 
     * @param exclui
     * @throws FuncionarioErro
     */
    public void excluirFuncionario(Funcionario exclui) throws FuncionarioErro{
		if(exclui!=null) {
			String comandoSQL;
			comandoSQL = "delete from funcionario where IdFuncionario = " + exclui.getIdFuncionario();
			System.out.println(comandoSQL);
			try {
				Statement stmt = ConnectionManager.getStatement();
				stmt.executeUpdate(comandoSQL);
				stmt.close();
			} catch (SQLException e) {
				System.out.println("� aqui o problema!!!");
				e.printStackTrace();
			}
		} else {
			throw new FuncionarioErro();
		}
	}

    /**
     * 
     * @param nome
     * @throws FuncionarioErro
     */
    public void pesquisarFuncionario(String nome) throws FuncionarioErro {

       ResultSet rs;
	String comandoSQL;
	comandoSQL = "select * from funcionario where Nome like "+nome+"%" ;
	System.out.println(comandoSQL);
	try {
            Statement stmt = ConnectionManager.getStatement();
            stmt.executeUpdate(comandoSQL);
            stmt.close();
	} catch (SQLException e) {
            try {
                System.out.println("� aqui o problema!!!");
                e.printStackTrace();
                throw new FuncionarioErro();
            } catch (FuncionarioErro ex) {
                Logger.getLogger(FuncionarioRepositorio.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    }

    /**
     * 
     * @param id
     * @return
     * @throws FuncionarioErro
     */
    public Funcionario pesquisarFuncionario(int id) throws FuncionarioErro{
                ResultSet rs;
                Funcionario funcionario = new Funcionario();
   		String comandoSQL;
   		comandoSQL = "select * from funcionario where IdFuncionario="+id;
   		System.out.println(comandoSQL);
   		try {
   			Statement stmt = ConnectionManager.getStatement();
   			rs = stmt.executeQuery(comandoSQL);
   			while(rs.next()) {
                                funcionario.setId(rs.getInt("IdFuncionario"));
                                funcionario.setNome(rs.getString("Nome"));
                                funcionario.setRg(rs.getString("RG"));
                                funcionario.setEndereco(rs.getString("Endereco"));
                                funcionario.setTelefone(rs.getString("Telefone"));
                                funcionario.setCelular(rs.getString("Celular"));
                                funcionario.setEmail(rs.getString("Email"));
                                //funcionario.setTipoPessoa(rs.getString("TipoPessoa"));
                                funcionario.setFuncao(rs.getString("Cargo"));
                                funcionario.setFuncao(rs.getString("Funcao"));
                                funcionario.setFuncao(rs.getString("Matricula"));
                                funcionario.setFuncao(rs.getString("Setor"));
                                funcionario.setFuncao(rs.getString("Status"));
                                System.out.println(rs.getString("Nome"));
                         }
   			stmt.close();
   		} catch (SQLException e) {
   			System.out.println("é aqui o problema!!!");
   			e.printStackTrace();
   		}
   		  return funcionario;
   	}


}